Virtual constructors

I recently added a new feature for a more generic handling of abstract data types: virtual constructors. This is actually a collection of three new features:

With all these features combined, we can, for example, clone any object in a generic way, without knowing its deriving type or size:

[AbstractT: TYPE] clone(ptr: AbstractT #\) AbstractT \
{
    clone ::= <AbstractT \>(std::heap::alloc_raw(SIZEOF#(*ptr)));
    COPY_RTTI(*ptr, clone); // init memory to TYPE(*ptr)
    clone->VIRTUAL{*ptr}; // copy constructor
    = clone;
}

This allows us to write clean code that does not need to know any deriving types, and even works on non-abstract types, as COPY_RTTI on non-abstract types is a no-op (since they have no type tag). Now we no longer need any # ABSTRACT clone() THIS - std::Dyn methods in abstract base classes, which keeps deriving classes lean, and no longer forces the cloning method to use any particular allocator or container type, as this can now be implemented in a black-box manner.